package com.demo.chapter11future;

import java.util.concurrent.CompletableFuture;

//实现Future那样的异步调用
public class FutureDemo3 {

	public static Integer calc(Integer para){
		try{
			//模拟一个长时间执行
			Thread.sleep(1000);
		}catch(InterruptedException e){
			e.printStackTrace();
		}
		return para * para;
	}

	public static void main(String[] args) throws Exception {
		final CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> calc(50));
		//支持线程池，在指定的线程池里工作，如果不指定，在默认的系统公共的ForkJoinPool.common线程池工作。
		//java8新增的ForkJoinPool.commonPool方法，它可以获得一个公共的ForkJoin线程池。这个公共线程池的所有线程都是daemon线程，意味着如果主线程退出，这些线程无论是否执行完毕，都会退出。
		//CompletableFuture.supplyAsync(supplier, executor)
		System.out.println(future.get());
	}

}
